リモートでのゲーム開発にオススメ?EC2にNICE DCVを導入してみた
どうも、コンサルティング部の後藤です。
コロナ禍の影響により様々な業界でリモートワーク化が進んでいる中、ハイエンドなグラフィックが処理できる環境が調達できず、リモートワーク化が進められない。。なんてことありませんでしょうか。今回はそんな需要にピッタリなNICE DCVをEC2上に導入してみました。
NICE DCVとは?
イタリアのNICE社によって開発されたリモート可視化ソフトウェア NICE Desktop Cloud Visualizationです。NICE DCVはHPC向け製品となっており、ハイエンドグラフィック向けに最適化された2D/3DのGUIアプリケーションに対して高速かつ快適なリモートアクセスを実現するソフトウェアです。
2016年、AWSはこのNICE社を買収したことによりAWS上では無償で利用できるようになっています。
NICE DCVの機能
NICE DCVには以下のような機能があります。
・Windows 及び Linux で3Dアプリケーションへの高パフォーマンスなリモートアクセス
・最大4台のクライアントモニタマルチスクリーン
・USB、スマートカード、およびスタイラスのリモート化をサポート
・H.264 ベースのエンコーディングをサポート
・OpenGLおよびDirectXアプリケーションに対する完全なGPUアクセラレーション
AWSにはリモート接続可能なサービスとして、WorkSpacesやAppStream2.0がありますが、NICE DCVを活用することでゲーム開発に必要なUSBデバイス等もAWS上のインスタンスで利用する事が可能です。
NICE DCVサーバ構築
EC2作成
まず、NICE DCVを導入するEC2を作成します。
使用するAMIを選択する際にNICE DCV
と検索するとAWS MarketPlaceに既にNICE DCV導入済みのAMIが見つかります。
ですが、今回はこちらを使用せず、Windows Server 2019でEC2を作成していきます。NICE DCV導入にはOS等に最小要件がありますので、導入の際には以下のドキュメントを一度確認してみてください。
NICE DCVを導入するEC2のインスタンスタイプはG3
またはG4
が推奨されているため、今回はg4dn.xlarge
で構築していきます。
その他のインスタンスタイプでも導入することは可能ですが、画像解像度に制限が生ずる可能性があったり、事前に導入しておくドライバーが異なります。詳しくは以下のドキュメントを確認してみてください。
Amazon EC2 インスタンス上の Windows NICE DCV サーバーの前提条件
また、今回作成するEC2はパブリックサブネット
で構築します。EC2でNICE DCVを利用する時、ライセンスサーバは必要ありませんが、定期的にS3バケットに接続してライセンスの確認を行っています。そのためプライベートサブネット
に作成する場合はVPCエンドポイントで接続できるよう、追加の設定が必要になります。
次にセキュリティグループを設定します。Windowsサーバを利用するためRDP用の3389
ポート、NICE DCVはリモートクライアントと通信に8443
ポートを使用するため、接続元のIPアドレスを許可するよう設定します。
IAM権限の設定
前途でも記述している通り、ライセンスの確認のため定期的にS3に接続を行います。また、今回はNVIDIAドライバーもS3から取得するため、その権限をIAMロールで付与します。権限の内容は以下の通りです。
### NICE DCVライセンス確認用IAMポリシー { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::dcv-license.ap-northeast-1/*" ※ap-northeast-1部分はリージョンに合わせ適宜変更 } ] } ### NVIDIAドライバー取得用IAMポリシー { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::nvidia-gaming/*", "arn:aws:s3:::nvidia-gaming", "arn:aws:s3:::ec2-windows-nvidia-drivers/*", "arn:aws:s3:::ec2-windows-nvidia-drivers" ] } ] }
NVIDIAのDriver導入
以下のコマンドをPowershellで実行してNVIDIA GRIDドライバーもしくはGamingドライバー(g4インスタンスのみ利用可能)を取得します。上記権限の設定が上手く行っていれば、取得することが出来ます。
### NVIDIA GRID Driver用 $Bucket = "ec2-windows-nvidia-drivers" $KeyPrefix = "latest" $LocalPath = "$home\Desktop\NVIDIA" $Objects = Get-S3Object -BucketName $Bucket -KeyPrefix $KeyPrefix -Region us-east-1 foreach ($Object in $Objects) { $LocalFileName = $Object.Key if ($LocalFileName -ne '' -and $Object.Size -ne 0) { $LocalFilePath = Join-Path $LocalPath $LocalFileName Copy-S3Object -BucketName $Bucket -Key $Object.Key -LocalFile $LocalFilePath -Region us-east-1 } } ### NVIDIA Gaming Driver用 $Bucket = "nvidia-gaming" $KeyPrefix = "windows/latest" $LocalPath = "$home\Desktop\NVIDIA" $Objects = Get-S3Object -BucketName $Bucket -KeyPrefix $KeyPrefix -Region us-east-1 foreach ($Object in $Objects) { $LocalFileName = $Object.Key if ($LocalFileName -ne '' -and $Object.Size -ne 0) { $LocalFilePath = Join-Path $LocalPath $LocalFileName Copy-S3Object -BucketName $Bucket -Key $Object.Key -LocalFile $LocalFilePath -Region us-east-1 } }
上記コマンド以外にも、NVIDIAの公式サイトより任意のドライバーバージョンを取得して導入する事も可能です。
ドライバーが取得出来たら導入していきます。今回はGRIDドライバーを使用していきます。2012R2用
と2016/2019用
があるため、OSにあったものを選択します。
NICE DCVの導入
NICE DCVの公式サイトより、NICE DCVサーバのインストーラーをダウンロードします。各OSによってインストーラーが異なるため、今回はWindowsのものを使用します。
nice-dcv-server-x64-Release-xxxx.x-xxxx.msi
がダウンロード出来たら実行してインストールを行います。
Drivers Selectionでは必要なデバイスドライバーを指定します。USBデバイスを使用する場合はUSB Device remotization
を選択し、Will be installed on local hard drive
を選択します。
DCV Service ConfigurationではFirewallの設定やNICE DCVサーバの起動等を自動/手動で行うかを指定します。今回は自動で行うため、チェックを付けずにせ設定しました。
DCV Session Management Configurationではセッションを自動/手動での作成を選択できます。セッションが無いと接続が出来ないため、今回は自動で作成しました。
主な選択肢は上記になります。最後にInstall
を選択して完了です。
Windowsサーバの場合、NICE DCV ServerのサービスはMicrosoft管理コンソールのサービススナップインで管理されています。インストール時に自動起動を行うよう設定したため、既に起動されていることが確認できます。
NICE DCVに接続してみる
NICE DCV Serverに接続する方法として、今回はNICE DCV Clientとブラウザからの接続を試してみました。
NICE DCV Clientで接続
NICE DCV Server同様、ClientもNICE DCVの公式サイトよりインストーラーをダウンロード出来ます。NICE DCV Serverに接続するローカル端末に導入しましょう。
NICE DCV Clientを起動すると、NICE DCV Serverの接続先を問われるので入力します。
次にログインに必要なユーザ名、パスワードを求められます。デフォルトではユーザ名がAdministrator、パスワードはキーペアで確認出来るものを使用してください。
ログインに成功すると、NICE DCV ClientでWindowsに接続することが出来ました。
ブラウザで接続
ブラウザのURLに以下のように入力します。
https://[NICE DCV Server IPaddress]:8443
すると、NICE DCV Client同様ログインを求められるため、先程と同様のユーザ名、パスワードを入力します。
ログインに成功すると、ブラウザからWindowsに接続することが出来ました。
まとめ
如何だったでしょうか。NICE DCV Serverの導入から接続確認までを行ってみました。今後、このサーバを利用してNICE DCVならではの機能(USB接続やマルチモニター等)を試していきたいと思います。 この記事が何方かのお役に立てば幸いです。